package main

import "fmt"

/*
种花问题
假设你有一个很长的花坛，一部分地块种植了花，另一部分却没有
可是，花卉不能种植在相邻的地块上，它们会争夺水源，两者都会死去。
给定一个花坛（表示为一个数组包含0和1，其中0表示没种植花，1表示种植了花）和一个数 n
能否在不打破种植规则的情况下种入n朵花？能则返回True，不能则返回False
示例 1:
输入: flowerbed = [1,0,0,0,1], n = 1
输出: True

示例 2:
输入: flowerbed = [1,0,0,0,1], n = 2
输出: False
*/

/*
本盆是0，只要前面是0，就把花种下
本盆是1，前面是1，说明种错了，把前一盆拔出来
*/

func canPlaceFlowers(flowerbed []int, n int) bool {
	for i := 0; i < len(flowerbed); i++ {
		if flowerbed[i] == 0 {
			if i == 0 || flowerbed[i-1] == 0 {
				flowerbed[i] = 1
				n--
			}
		} else {
			if i != 0 && flowerbed[i-1] != 0 {
				flowerbed[i-1] = 0
				n++
			}
		}
	}
	if n > 0 {
		return false
	} else {
		return true
	}
}

func main() {
	fmt.Println(canPlaceFlowers([]int{1, 0, 1, 0, 1, 0, 1}, 0))
}
